package br.com.imob.dao;

import br.com.imob.modelo.Origem;

import java.util.List;

/** @user Gilton Nascimento
 *  @since 12:06:20 31/01/2011 2011
 *  @version 
 */

public class OrigemDao extends GenericDao {
	
	public OrigemDao() {  }
	
	public Integer adicionarOrigem(Origem origem) {
		saveOrUpdatePojo(origem);
		return origem.getOrigemId();
	}
	
	public void removerOrigem(Origem origem) {
		removerPojo(origem);
	}

	/* Precisa definir o ID */
	public void atualizarOrigem(Origem recupera) {
		saveOrUpdatePojo(recupera);
	}
	
	/**
	 * Editar um Origem
	 * @param String oldOrigem
	 * @param String newOrigem
	 */
	public void atualizarOrigem(String oldOrigem, String newOrigem ) {
		if ( ( !"".equals(oldOrigem) && oldOrigem != null )
			&& ( !"".equals(newOrigem) && newOrigem != null ) ) 
			atualizarOrigem( getOrigemQNamed(oldOrigem), new Origem(newOrigem) );
	}
	
	/* Precisa definir qual atribuito sera a chave a identificar 
	 * a tupla a ser alterada */
	public void atualizarOrigem(Origem recuperar, Origem alterar) {
		recuperar = retriveOrigem(recuperar);
		
		if(alterar.getOrigem() != null)
			recuperar.setOrigem(alterar.getOrigem());
		
		saveOrUpdatePojo(recuperar);
	}
	
//	Artificio para Recuperar a Tupla de Origem
	protected Origem retriveOrigem(Origem recuperar) {
		if(recuperar.getOrigemId() == null)
			return getOrigemQNamed(recuperar.getOrigem());
		else 
			return getOrigem(recuperar.getOrigemId());
	}
	
	
//	Consultas
	public Origem getOrigem(Integer key) {
		return getPojoByID(Origem.class, key);
	}
	public Origem getOrigemByQuery(String query, Object...params) {
		return getPojoByQry(query, params);
	}
	public Origem getOrigemQNamed(String fltrOrigem) {
		return getPojoByQNamed("Origem.findByOrigem", fltrOrigem);
	}
	
	public List<Origem> getOrigens() {
		return (List<Origem>) getALL(Origem.class);
	}
	public List<Origem> getOrigensQNamedPRX(String fltrOrigem) {
		return getListByQNamedPRX("Origem.findLikeByOrigem", fltrOrigem);
	}
	public List<Origem> getOrigensByQuery(String query, Object...params) {
		return getListByQry(query, params);
	}

	
}
